#ifndef __VALUE_H__
#define __VALUE_H__

#include"../lvgl/lvgl.h"

// 标准IO相关
#include <stdio.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>
#include <stdbool.h>

// 系统相关
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>

// 时间
#include <time.h>
#include <signal.h>
#include <pthread.h>
#include <errno.h>
#include <semaphore.h>

// 网络
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

// 定义一个结构体来存储选择登录的类型以及账号密码
typedef struct {
    lv_obj_t *username_ta;
    lv_obj_t *password_ta;
} Login_Data;

//登入登出注册的信息
typedef struct Log_Info
{
    char logmsg[10];   //"in":登入 、"out":登出 、"regist":注册
    unsigned int id;  //账号
    char username[32];//账号名
    char password[32]; //密码
}log_info;

// 定义一个结构体来存储注册用户数据
typedef struct {
    lv_obj_t *userid_ta;
    lv_obj_t *username_ta;
    lv_obj_t *password_ta;
    lv_obj_t *password_ta2;;
} UserData;

//记录当前用户
typedef struct{
    unsigned int id;  //账户
    char username[32];//用户名
    char password[32];//密码
}Userinfo;

//好友数据
typedef struct{
    unsigned int cur_id;//哪个账户的好友数据
    unsigned int id; //好友账户
    char username[32];//用户名
}friend;

//本地消息结构体
typedef struct 
{
    unsigned int sendid; //发送者
    unsigned int recvid; //接收者
    char msg[256];       //消息
}chat_log;


//文件信息结构体
typedef struct 
{
    char filename[256];//文件名
    char filepath[512];//文件路径(相对路径)
    long filesize;     //文件大小
}fileinfo;

//消息端口
#define MSG_PORT 50021

//用户登入登出端口
#define Login_Out_PORT 50022

extern int comfd; //发送消息
extern int logfd; //登入登出

extern Userinfo cur_user;

extern struct sockaddr_in srvAddr;

#define MAX_USER 100  
extern friend cur_user_friend[MAX_USER]; //一个账户最多100好友

//从客户端获取的好友数据
extern friend user_friend[MAX_USER];

#define LOCAL_MAX_USER 1000
extern friend local_user_friend[LOCAL_MAX_USER];

#define MAX_CHAT_LOG 4096
extern chat_log logs[MAX_CHAT_LOG];

#define MAX_FILE_NUM 1024
extern fileinfo files[MAX_FILE_NUM];

extern fileinfo cur_file;


extern int cur_friend_num;
extern int logs_num;

extern int file_num;

extern int user_friend_num;

#endif